// Mechanicoder
// 2025年8月9日

#pragma once

#include <Geom_BSplineCurve.hxx>
#include <gp_Ax2.hxx>
#include <TopoDS_Shape.hxx>

#include <string>

struct HelixData
{
    double rStart = 10;
    double taperFactor = 0;
    bool ccw = true;
    double pitch = 10;

    double tStart = 0;
    double tEnd = 2 * M_PI;

    gp_Ax2 loc;
};

class TestHelix
{
public:
    // [Key 1]螺旋线性能测试
    // OUT：中间构造的模型数据
    static void TestPerf(std::vector<TopoDS_Shape>& shapes, std::vector<std::string>& names);

    // [Key 2]通过几个例子说明参数含义
    // OUT：例子模型
    static void Examples(std::vector<TopoDS_Shape>& shapes, std::vector<std::string>& names);
};